Telegram Group & Telegram Channel
بدايه مبرمج
Photo
SOLID Principles

خامس مبدأ(DIP) Dependency Inversion Principle

“ High level modules should not depend upon low level modules. Both should depend upon abstractions”

الـ High level classes يجب ألا تكون مُعتمدة على low level classes و يجب ان يكون بينهما وسيط وهو abstractions.

على سبيل المثال افترض عندك كلاس سوبر ماركت وعشان تملي السوبر ماركت بالأصناف لابد انه تستخدم كلاسات كُل صنف مثلاً كلاس خضروات وكلاس الفواكه وتستدعي دالة الإضافة.

Fruit f = new Fruit();
f.add();
Vegetable v = new Vegetable();
v.add();

ونفس الشيء في بقية الأصناف ..

هنا كلاس السوبر ماركت يُعتبر ( High level ) مُعتمد بشكل كُلي على كلاسات الأصناف ( low level )،بمعنى أي تغيرات في ( low level ) لابد ان تنعكس في ( High level ) طيب ايش المشكلة اللي ممكن تصير🙄!

تخيل لو كلاس الفواكه عدل في دالة إضافة فاكهة هنا انت مضطر ترجع تعدل في كلاس السوبر ماركت.

وبكذا خالفنا مبدأ Open Close واصبح كلاس السوبر ماركت مفتوح للتعديلات😵وايضاً مُعتمد على كلاسات أخرى أي خالفنا مبدأ DIP .

طيب والحل ،السوبرماركت ضروري نضيف لها اصناف🤔

الحل هو عمل وسيط عن طريقه تضيف الصنف اللي تحتاجه وبدون ما تعتمد على الغير 😉 .

لنفرض الوسيط هو Interface يكون بداخلها دالة الإضافة، ومن ثم نجعل كلاسات الـ low level تعمل Implement لهذا الوسيط .

بحيث يستطيع كلاس السوبر ماركت التعامل مع low level عن طريق الوسيط .

وبكذا طبقنا المبدأ واصبح كلاس السوبر ماركت منعزل تماماً عن التغيرات اللي ممكن تحدث في كلاسات Low Level أي جعلنا الكلاس مُغلق عن أي تعديلات وبنفس الوقت غير مُعتمد على أي كلاس، أيضاً قللنا من Coupling واقصد بالـ Coupling هو ترابط الكود .

ملاحظة : عند زيادة Coupling في الكود يصبح صعب التعديل عليه او تطويره لذلك تسعى SOLID إلى تقليل من Coupling وزيادة Cohesion.

أخيراً
هذه المبادئ يوجد بينهما علاقة بمعنى لو اخذت كُل منهم بشكل معزول عن الآخر وطبقته فسوف تحصل على فائدة ولكن ليست كبيرة.

تمنياتي لكم بالتوفيق 🙏



tg-me.com/beginprogrammer/643
Create:
Last Update:

SOLID Principles

خامس مبدأ(DIP) Dependency Inversion Principle

“ High level modules should not depend upon low level modules. Both should depend upon abstractions”

الـ High level classes يجب ألا تكون مُعتمدة على low level classes و يجب ان يكون بينهما وسيط وهو abstractions.

على سبيل المثال افترض عندك كلاس سوبر ماركت وعشان تملي السوبر ماركت بالأصناف لابد انه تستخدم كلاسات كُل صنف مثلاً كلاس خضروات وكلاس الفواكه وتستدعي دالة الإضافة.

Fruit f = new Fruit();
f.add();
Vegetable v = new Vegetable();
v.add();

ونفس الشيء في بقية الأصناف ..

هنا كلاس السوبر ماركت يُعتبر ( High level ) مُعتمد بشكل كُلي على كلاسات الأصناف ( low level )،بمعنى أي تغيرات في ( low level ) لابد ان تنعكس في ( High level ) طيب ايش المشكلة اللي ممكن تصير🙄!

تخيل لو كلاس الفواكه عدل في دالة إضافة فاكهة هنا انت مضطر ترجع تعدل في كلاس السوبر ماركت.

وبكذا خالفنا مبدأ Open Close واصبح كلاس السوبر ماركت مفتوح للتعديلات😵وايضاً مُعتمد على كلاسات أخرى أي خالفنا مبدأ DIP .

طيب والحل ،السوبرماركت ضروري نضيف لها اصناف🤔

الحل هو عمل وسيط عن طريقه تضيف الصنف اللي تحتاجه وبدون ما تعتمد على الغير 😉 .

لنفرض الوسيط هو Interface يكون بداخلها دالة الإضافة، ومن ثم نجعل كلاسات الـ low level تعمل Implement لهذا الوسيط .

بحيث يستطيع كلاس السوبر ماركت التعامل مع low level عن طريق الوسيط .

وبكذا طبقنا المبدأ واصبح كلاس السوبر ماركت منعزل تماماً عن التغيرات اللي ممكن تحدث في كلاسات Low Level أي جعلنا الكلاس مُغلق عن أي تعديلات وبنفس الوقت غير مُعتمد على أي كلاس، أيضاً قللنا من Coupling واقصد بالـ Coupling هو ترابط الكود .

ملاحظة : عند زيادة Coupling في الكود يصبح صعب التعديل عليه او تطويره لذلك تسعى SOLID إلى تقليل من Coupling وزيادة Cohesion.

أخيراً
هذه المبادئ يوجد بينهما علاقة بمعنى لو اخذت كُل منهم بشكل معزول عن الآخر وطبقته فسوف تحصل على فائدة ولكن ليست كبيرة.

تمنياتي لكم بالتوفيق 🙏

BY بدايه مبرمج




Share with your friend now:
tg-me.com/beginprogrammer/643

View MORE
Open in Telegram


بدايه مبرمج Telegram | DID YOU KNOW?

Date: |

How To Find Channels On Telegram?

There are multiple ways you can search for Telegram channels. One of the methods is really logical and you should all know it by now. We’re talking about using Telegram’s native search option. Make sure to download Telegram from the official website or update it to the latest version, using this link. Once you’ve installed Telegram, you can simply open the app and use the search bar. Tap on the magnifier icon and search for a channel that might interest you (e.g. Marvel comics). Even though this is the easiest method for searching Telegram channels, it isn’t the best one. This method is limited because it shows you only a couple of results per search.

NEWS: Telegram supports Facetime video calls NOW!

Secure video calling is in high demand. As an alternative to Zoom, many people are using end-to-end encrypted apps such as WhatsApp, FaceTime or Signal to speak to friends and family face-to-face since coronavirus lockdowns started to take place across the world. There’s another option—secure communications app Telegram just added video calling to its feature set, available on both iOS and Android. The new feature is also super secure—like Signal and WhatsApp and unlike Zoom (yet), video calls will be end-to-end encrypted.

بدايه مبرمج from in


Telegram بدايه مبرمج
FROM USA